iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

多人連線遊戲背後的原理與實作系列 第 23

Day23 - 程式實作(寄送封包篇二)

  • 分享至 

  • xImage
  •  

今天分別要在伺服器端及客戶端,去對封包做發送以及接收的工作,可以先分別在Server以及Client創建Send以及Receive的Script。

一. 發送端

發送封包前必須決定好要用TCP或是UDP作為傳輸協議,以及封包要傳給哪幾個目標。

private static void SendTCPData(int _toClient, Packet _packet)
{
    _packet.WriteLength();
    Server.clients[_toClient].tcp.SendData(_packet);
}

private static void SendUDPData(int _toClient, Packet _packet)
{
    _packet.WriteLength();
    Server.clients[_toClient].udp.SendData(_packet);
}

private static void SendTCPDataToAll(Packet _packet)
{
    _packet.WriteLength();
    for (int i = 1; i <= Server.MaxPlayers; i++)
    {
        Server.clients[i].tcp.SendData(_packet);
    }
}

private static void SendTCPDataToAll(int _exceptClient, Packet _packet)
{
    _packet.WriteLength();
    for (int i = 1; i <= Server.MaxPlayers; i++)
    {
        if (i != _exceptClient)
        {
            Server.clients[i].tcp.SendData(_packet);
        }
    }
}

二. 接收端

收到封包後先對封包做解碼,解碼時要注意資料型態的轉換,以及注意封包的ID不能出錯。


上一篇
Day22- 程式實作(線程篇)
下一篇
Day24 - 程式實作(寄送封包篇三)
系列文
多人連線遊戲背後的原理與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言